iT邦幫忙

2023 iThome 鐵人賽

DAY 19
0
Software Development

Laravel專案練習-寶可夢管理系統系列 第 19

Day19 寶可夢專案-寶可夢資料庫的建立-排程設定

  • 分享至 

  • xImage
  •  

前言:

在前面的部分有提到我用一次打大量API的方式,取得第三方的資料,那這時候有一個問題,假設我今天真的達到資料了, 但我如果要定時更新呢?

我目前拿資料的流程是:
所以我將我打API並儲存成json的動作

→上傳json資料到ec2的server的動作

→以及以及從ec2把json decode然後存入資料庫的動作

全部用成排程,然後定時的去做。

以下分享一下我如何設定:

使用cron

  • 什麼是cron?

    cron是Linux/Unix系統中的一項工具,允許用戶在特定的時間和日期執行特定的指令。它用於設定周期性被執行的任務。

  • 設定流程

    • 基本指令

      crontab -e。 他會開啟編輯一個介面(如下)

      30 09 * * * cd /Users/liweide/laravel/pokemon && /opt/homebrew/Cellar/php@8.3/8.3.0/bin/php artisan schedule:run
      

      在cd的左邊是時間,時間格式從左至右分別為:

      • 分鐘 (0-59)
      • 小時 (0-23)
      • 月份中的日期 (1-31)
      • 月份 (1-12)
      • 星期的天 (0-7) (星期天可以是0或7)

      cd 後面的是你要執行指令的目錄(我這個例子是laravel)

      &&後面的就是我要操作的指令

      比如我現在這個就是他在上午09:30分會去/Users/liweide/laravel/pokemon這個目錄執行後面的指令。

使用SCP上傳檔案

  • 使用SCP排成做定時的上傳資料

    什麼是SCP?

    SCP (Secure Copy) 是一個在Linux下用於在本地主機和遠端主機之間加密地傳輸文件的命令行工具。它基於SSH協議。

    upload_to_ec2.sh檔(自己建)

    1. 建上傳腳本

      a. 使用你的終端機或命令列界面打開一個編輯器。例如,使用vim:

      
      vim upload_to_ec2.sh
      
      

      b. 在這個文件中,輸入以下命令:

      SCP_OUTPUT=$(scp -i /path/to/your-key.pem /path/to/your/local/file username@your-ec2-ip-address:/path/where/you/want/to/upload/on/ec2 2>&1)
      

      這段指令主要可以分成三段來看:

      1.先輸入你的密鑰位置(scp -i /path/to/your-key.pem)

      2.輸入你的要上傳的檔案位置(/path/to/your/local/file username)

      3.要連線的ec2主機的ip:你想上傳的目錄的路徑(@your-ec2-ip-address:/path/where/you/want/to/upload/on/ec2 2>&1)

      • 如何執行?

        要執行上傳的腳本,首先確保它具有執行權限。你可以使用以下指令:

        
        chmod +x upload_to_ec2.sh
        
        

        然後執行它(可以先測試看看有沒有成功):

        
        ./upload_to_ec2.sh
        
        

建立好上傳的檔案後

接者就是把執行上傳檔案的這個動作,再加到cron 的後面,我完整的設定是這樣:

00 12 01 10,11 * cd /Users/liweide/laravel/pokemon && /opt/homebrew/Cellar/php@8.3/8.3.0/bin/php artisan db:seed --class=RaceSeeder && /Users/liweide/laravel/pokemon/upload_to_ec2.sh

將指令加在後面他在時間到了之後會依序去執行這些指令。

小結語

其實上傳檔案還有其他種方式(比如rsync),但小弟還沒有時間去研究,希望未來有時間可以再研究、分享。


上一篇
Day18:寶可夢專案-寶可夢資料庫的建立-請求大量資料的問題與改善-定時更新資料
下一篇
Day20:寶可夢專案-寶可夢API開發-n+1問題
系列文
Laravel專案練習-寶可夢管理系統30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言